//
//  EOCRectangle.m
//  Test
//
//  Created by 杨德龙 on 2017/6/22.
//  Copyright © 2017年 HipalSports. All rights reserved.
//
/*
   我们假设  有多个初始化方法的条件下
   不调用公用的全能初始化方法的话 很可能 忘记某个 方法的调用
 */


#import "EOCRectangle.h"

@implementation EOCRectangle


- (instancetype)initWithWidth:(float) width
                    andHeight:(float )height
{
    NSLog(@"rectangle init initWithWidthAndHeight");
    if (self=[super init]) {
        _width=width;
        _height=height;
    }
    return self;
}

/*
 但是 开发者有可能直接调用了 init 方法  因为NSObject 是实现了init 方法了的
 */

- (instancetype)init
{
    NSLog(@"rectangle init ");
    return [self initWithWidth:5.0f andHeight:10.0f];
}

#pragma mark ---- initializer from NSCoding


/**
 从 NSCoding 协议  序列化

 @param aDecoder aDecoder description
 @return return value description
 */

/*
 !!!!
 NSCoding 协议的初始化方法没有调用本类的全能初始化方法
 而是调用了超类的相关方法 而且若超类 也实现了了NSCoding,
 则改为调用调用 超类的 initWithCoder: 初始化方法
 
 */
- (id)initWithCoder:(NSCoder *)aDecoder
{
    if (self=[super init]) {
        _width=[aDecoder decodeFloatForKey:@"width"];
        _height=[aDecoder decodeFloatForKey:@"height"];
    }
    return self;
}








@end
